////////////////////////////////////////////////////////////////////////////////
// Filename: RenderItemManager.h
////////////////////////////////////////////////////////////////////////////////
#ifndef _RENDERITEMMANAGER_H_
#define _RENDERITEMMANAGER_H_


//////////////
// INCLUDES //
//////////////
#include <windows.h>
#include <xnamath.h>

class RenderItem;

////////////////////////////////////////////////////////////////////////////////
// Class name: CameraClass
////////////////////////////////////////////////////////////////////////////////
class RenderItemManager
{
public:
	RenderItemManager();
	RenderItemManager(const RenderItemManager&);
	~RenderItemManager();

	void Update();
	void SortIteration(int pIterationsCount);
	void SortIterationDesc(int pIterationsCount);
	void MoveForward(RenderItem* item);
	void MoveBack(RenderItem* item);
	void AddItem(RenderItem* item);

	void Render();
	void DepthRender(XMFLOAT4X4* pViewMatrix, XMFLOAT4X4* pProjectionMatrix);
	void RenderShadow(XMFLOAT4X4* pViewMatrix, XMFLOAT4X4* pProjectionMatrix, XMFLOAT4X4* pLightLargeViewMatrix, XMFLOAT4X4* pLightLargeProjectionMatrix);

	void RaiseAllRemoveFlags();
	void RemoveItemsByFlag();


private:
	RenderItem* mStartItem;
};

#endif